/*!
 * \file test_wts_simple.cpp
 * \brief WTS基础功能简单测试
 * 
 * \details 该文件包含WTS基础类的简单测试用例，
 *          主要验证基本功能而不涉及复杂的内存管理
 * 
 * \author AI Assistant
 * \date 2024
 */

#include <gtest/gtest.h>
#include "../../src/Includes/WTSObject.hpp"
#include "../../src/Includes/WTSCollection.hpp"

using namespace wtp;

/*!
 * \brief WTS简单测试类
 */
class WTSSimpleTest : public ::testing::Test {
protected:
    void SetUp() override {
        // 测试前准备
    }
    
    void TearDown() override {
        // 测试后清理
    }
};

/*!
 * \brief 测试WTSObject基本功能
 */
TEST_F(WTSSimpleTest, TestWTSObjectBasic) {
    // 创建对象
    WTSObject* obj = new WTSObject();
    ASSERT_NE(obj, nullptr);
    
    // 检查初始引用计数
    EXPECT_EQ(obj->retainCount(), 1);
    
    // 测试retain
    obj->retain();
    EXPECT_EQ(obj->retainCount(), 2);
    
    // 测试release
    obj->release();
    EXPECT_EQ(obj->retainCount(), 1);
    
    // 最终释放
    obj->release();
}

/*!
 * \brief 测试WTSArray基本创建和销毁
 */
TEST_F(WTSSimpleTest, TestWTSArrayBasic) {
    // 创建数组
    WTSArray* array = WTSArray::create();
    ASSERT_NE(array, nullptr);
    
    // 检查初始状态
    EXPECT_EQ(array->size(), 0);
    
    // 释放数组
    array->release();
}

/*!
 * \brief 测试WTSHashMap基本创建和销毁
 */
TEST_F(WTSSimpleTest, TestWTSHashMapBasic) {
    // 创建哈希映射
    WTSHashMap<std::string>* map = WTSHashMap<std::string>::create();
    ASSERT_NE(map, nullptr);
    
    // 检查初始状态
    EXPECT_EQ(map->size(), 0);
    
    // 释放映射
    map->release();
} 